const DoublyLinkedList = require("../template.js")

/** 5. 插入方法测试 */
function testInsert() {
  const link = DoublyLinkedList.fromArray(["a", "b", "d"])

  // 测试按值插入
  link.insertByValue("b", "c") // 在b后插入c
  console.log(
    "5.1 按值插入:",
    link.size === 4 &&
      link.findByIndex(0).value === "a" &&
      link.findByIndex(1).value === "b" &&
      link.findByIndex(2).value === "c" &&
      link.findByIndex(3).value === "d" &&
      link.findByIndex(2).prev.value === "b" &&
      link.findByIndex(2).next.value === "d"
  )

  link.insertByIndex(3, "e") // 在索引3处插入e（现在链表是a,b,c,d,e）

  console.log(
    "5.2 按索引插入尾部:",
    link.tail.value === "e" &&
      link.size === 5 &&
      link.findByIndex(4).value === "e" &&
      link.findByIndex(4).prev.value === "d"
  )

  // 测试头部插入
  link.insertByIndex(0, "x") // 在索引0的节点（'a'）后插入'x'
  console.log(
    "5.3 按索引插入头部:",
    link.head.value === "a" && // 头部仍然是 'a'
      link.size === 6 &&
      link.findByIndex(1).value === "x" && // 'a' 后是 'x'
      link.findByIndex(1).prev.value === "a"
  )
  console.log("--------------------")
}

testInsert()

module.exports = testInsert
